[Amazon FSx for NetApp ONTAP] ONTAP接続時に使用するユーザーとロールを作成してみた

[Amazon FSx for NetApp ONTAP] ONTAP接続時に使用するユーザーとロールを作成してみた

アクセス権限を細かく設定したい時や、運用者ごとにユーザーを発行したい時に
Clock Icon2024.11.27

権限ごとにユーザーを分けたい

こんにちは、のんピ(@non____97)です。

皆さんはAmazon FSx for NetApp ONTAP(以降FSxN)を運用していて、SSHで接続時に使用するユーザーを権限ごとに分けたいと思ったことはありますか? 私はあります。

FSxNではデフォルトでユーザーを使用するできるようになっていません。デフォルトで存在しているユーザーはロックがかかっているため、マネジメントコンソールからfsxadminまたは各SVMのvsadminのユーザーパスワードを設定することで、対象ユーザーを使用することが可能になります。

fsxadminvsadminなどのデフォルトで存在しないユーザーやロールを用意したい場合はONTAP CLIかONTAP REST APIを用いる必要があります。

場合によっては、運用者個人ごとにユーザーを用意したり、各ユーザーに割り当てる権限を絞りたい場面が出てきます。

実際にどのように設定するのか紹介します。

いきなりまとめ

  • ONTAPではRBACで権限を付与
  • ONTAPロールはファイルシステムレベルのものと、SVMレベルのものの2種類ある
  • ファイルシステムレベルのロールは新規追加及び編集ができない
  • 各レベルのロールがデフォルトでいくつか存在している
  • SVMレベルのロールを自作して、ユーザーに割り当てることも可能

ONTAPロールとは

ONTAPはロールベースのアクセスコントロール(RBAC)で権限を付与します。

ONTAPロールでは権限だけでなく、割り当てられるONTAPユーザーの名前の長さやパスワードポリシー、ロック期間についても設定できます。

ONTAPロールはファイルシステムレベルのものと、SVMレベルのものの2種類に大別されます。

ファイルシステムレベルのロールはデフォルトで以下の2つが存在しています。

ロール名 権限概要
fsxadmin • ONTAPシステムに対する無制限の権限を持っている
• すべてのファイルシステムと、ONTAPファイルシステムの FSxで利用可能な SVMレベルのリソースを設定できる
fsxadmin-readonly • ファイルシステムレベルですべてを表示できるが、変更を加えることはできない

参考 : ONTAP ロールとユーザー - ONTAP に関する FSx

ファイルシステムレベルのロールの注意点は以下のとおりです。

  • 新しくファイルシステムレベルのロールを作成することはできない
  • 既存のファイルシステムレベルのロールの権限を変更することはできない
    • パスワードポリシーなど権限以外は修正可能

「各SVMのボリューム情報のみを横断的に表示させたい」ということを実現することはできません。権限的に過剰にはなってしまいますが、fsxadmin-readonlyを使用することになります。

SVMレベルのロールでは以下の6つがデフォルトとして存在しています。

Role name Capabilities
vsadmin • Manage your user account, local password, and key information
• Manage volumes, except for volume moves
• Manage quotas, qtrees, Snapshot copies, and files
• Manage LUNs
• Perform SnapLock operations, except for privileged delete
• Configure protocols: NFS, SMB, and iSCSI
• Configure services: DNS, LDAP, and NIS
• Monitor jobs
• Monitor network connections and the network interface
• Monitor the health of the SVM
vsadmin-volume • Manage your user account, local password, and key information
• Manage volumes, including volume moves
• Manage quotas, qtrees, Snapshot copies, and files
• Manage LUNs
• Configure protocols: NFS, SMB, and iSCSI
• Configure services: DNS, LDAP, and NIS
• Monitor the network interface
• Monitor the health of the SVM
vsadmin-protocol • Manage your user account, local password, and key information
• Manage LUNs
• Configure protocols: NFS, SMB, and iSCSI
• Configure services: DNS, LDAP, and NIS
• Monitor network interface
• Monitor the health of the SVM
vsadmin-backup • Manage your user account, local password, and key information
• Manage NDMP operations
• Make a restored volume read/write
• Manage SnapMirror relationships and Snapshot copies
• View volumes and network information
vsadmin-snaplock • Manage your user account, local password, and key information
• Manage volumes, except for volume moves
• Manage quotas, qtrees, Snapshot copies, and files
• Perform SnapLock operations, including privileged delete
• Configure protocols: NFS and SMB
• Configure services: DNS, LDAP, and NIS
• Monitor jobs
• Monitor network connections and the network interface
vsadmin-readonly • Manage your user account, local password, and key information
• Monitor the health of the SVM
• Monitor the network interface
• View volumes and LUNs
• View services and protocols

抜粋 : ONTAP のロールとユーザー - FSx for ONTAP

本記事投稿時点のデフォルトのONTAPロールの詳細な権限については以下GitHubリポジトリで管理しています。興味ある方は覗いてみてください。

https://github.com/non-97/amazon-fsx-for-netapp-ontap-default-role

権限の確認の仕方は以下記事が参考になります。

https://dev.classmethod.jp/articles/list-of-ontap-cli-commands-supported-by-amazon-fsx-for-netapp-ontap/

ONTAPユーザーとは

FSxNに接続する際はONTAPユーザーを使用します。

ONTAPロールとONTAPユーザーの関係性は1:nです。

1つのONTAPロールに複数のONTAPユーザーを関連づけることはできますが、1つのONTAPユーザーに関連づけられるONTAPロールは1つまでです。

ユーザーには以下のような情報が設定可能です。

  • SVM名
  • ユーザー名
  • 関連付けるONTAPロール
  • 接続方式
    • amqp
    • console
    • http
    • ontapi
    • rsh
    • service-processor
    • snmp
    • ssh
    • telnet
  • 認証方式
    • cert
    • community
    • domain
    • nsswitch
    • password
    • publickey
    • saml
    • usm
  • 2要素認証方式
    • domain
    • nsswitch
    • password
    • publickey
    • totp
    • none

ONTAP CLIでのみ操作するなら接続方式はssh、パスワードによる認証をするのであれば認証方式はpasswordという形で指定します。

オプションの詳細は以下NetApp公式ドキュメントかAWS公式ドキュメントをご覧ください。

https://docs.aws.amazon.com/ja_jp/fsx/latest/ONTAPGuide/create-new-ontap-users.html

https://docs.netapp.com/us-en/ontap-cli/security-login-create.html#description

やってみた

ONTAPロールの作成

実際に試してみましょう。

まず、SMBファイル共有を管理するようなロールを作成します。

具体的には以下のような権限を付与します。

  • ボリュームに関する情報の参照権限
  • SMBサーバーに関する情報の参照権限
  • SMBファイル共有に関する変更権限
  • SMBセッションに関する変更権限
  • dfの参照権限

ONTAPロールの作成はsecurity login role createで行います。

::> whoami
  (security login whoami)

User: fsxadmin
Role: fsxadmin

::> security login role create -role vsadmin-smb-share -cmddirname "volume show" -access readonly -vserver svm

Warning: This operation will also affect the following commands:
    "volume create"
    "volume modify"

::> security login role create -role vsadmin-smb-share -cmddirname "vserver cifs" -access readonly -vserver svm

::> security login role create -role vsadmin-smb-share -cmddirname "vserver cifs share" -access all -vserver svm

::> security login role create -role vsadmin-smb-share -cmddirname "vserver cifs session" -access all -vserver svm

::> security login role create -role vsadmin-smb-share -cmddirname "df" -access readonly -vserver svm

::> security login role show -role vsadmin-smb-share
           Role          Command/                                      Access
Vserver    Name          Directory                               Query Level
---------- ------------- --------- ----------------------------------- --------
svm        vsadmin-smb-share
                         DEFAULT                                       none
                         df                                            readonly
                         volume create                                 readonly
                         volume modify                                 readonly
                         volume show                                   readonly
                         vserver cifs                                  readonly
                         vserver cifs session                          all
                         vserver cifs share                            all
8 entries were displayed.

::> security login role config show -role vsadmin-smb-share
                          ----- Password Restrictions -----
Vserver     RoleName      Size AlphaNum NoReuse ChangeDelay
----------- ------------- ---- -------- ------- -----------
svm         vsadmin-smb-share
                             8  enabled       6      0 days

::> security login role config show -role vsadmin-smb-share -instance
                                            Vserver: svm
                                          Role Name: vsadmin-smb-share
                   Minimum Username Length Required: 3
                             Username Alpha-Numeric: disabled
                   Minimum Password Length Required: 8
                             Password Alpha-Numeric: enabled
   Minimum Number of Special Characters Required In
                                       The Password: 0
                         Password Expires In (Days): unlimited
     Require Initial Password Update on First Login: disabled
                  Maximum Number of Failed Attempts: 0
                      Maximum Lockout Period (Days): 0
                       Disallow Last 'N' Passwords : 6
              Delay Between Password Changes (Days): 0
       Delay after Each Failed Login Attempt (Secs): 4
  Minimum Number of Lowercase Alphabetic Characters
                           Required in the Password: 0
  Minimum Number of Uppercase Alphabetic Characters
                           Required in the Password: 0
  Minimum Number of Digits Required in the Password: 0
     Display Warning Message Days Prior to Password
                                      Expiry (Days): unlimited
                          Account Expires in (Days): unlimited
      Maximum Duration of Inactivity before Account
                                  Expiration (Days): unlimited

ロールの作成ができました。

ロールの権限割り当ては以下NetAppのKBが参考になります。

https://kb.netapp.com/on-prem/ontap/Ontap_OS/OS-KBs/FAQ__Custom_roles_for_administration_of_ONTAP

内部コマンドであるcreatemodifydeleteshowは個別にアクセス権を指定することはできないため、注意しましょう。先のコマンド実行のようにvolume createvolume modifyに対する権限も併せて設定されます。

また、以下のようにvolume全体に対するreadonlyの設定もできません。

::*> security login role create -role vsadmin-smb-share -cmddirname volume -access readonly -vserver svm 

Error: command failed: not authorized for that command

ONTAPロールへ権限の削除

権限の削除はsecurity login role deleteで可能です。

::> security login role delete -role vsadmin-smb-share -cmddirname "df" -vserver svm

::> security login role show -role vsadmin-smb-share
           Role          Command/                                      Access
Vserver    Name          Directory                               Query Level
---------- ------------- --------- ----------------------------------- --------
svm        vsadmin-smb-share
                         DEFAULT                                       none
                         volume create                                 readonly
                         volume modify                                 readonly
                         volume show                                   readonly
                         vserver cifs                                  readonly
                         vserver cifs session                          all
                         vserver cifs share                            all
7 entries were displayed.

今回は割愛しますが、security login role modifyで権限の修正も可能です。

作成したONTAPロールを割り当てるONTAPユーザーの作成

ONTAPロールを割り当てるONTAPユーザーの作成をしてみましょう。

ユーザーの作成はsecurity login createです。

::> security login create ?
  [ -vserver <vserver name> ]                                                       Vserver (default: FsxId0e64a4f5386f74c87)
   [-user-or-group-name] <text>                                                     User Name or Group Name
   [-application] <text>                                                            Application
   [-authentication-method] <text>                                                  Authentication Method
  [ -remote-switch-ipaddress <IP Address> ]                                         Remote Switch IP Address
  [[-role] <text>]                                                                  Role Name (default: admin)
  [ -comment <text (size 0..128)> ]                                                 Comment Text
  [ -is-ns-switch-group {yes|no} ]                                                  Whether Ns-switch Group (default: no)
  [ -second-authentication-method {none|publickey|password|nsswitch|domain|totp} ]  Second Authentication Method2 (default: none)
  [ -is-ldap-fastbind {yes|no} ]                                                    LDAP Fastbind Authentication

::> security login create -user-or-group-name vsadmin-smb-share-user -role vsadmin-smb-share -application ssh -authentication-method password -vserver svm

Error: command failed: failed to set field "username" to "vsadmin-smb-share-user"
       Username does not meet configured requirements:
       Username does not meet length requirements. Username length: 22. Maximum required length: 16.

::> security login create -user-or-group-name smb-share-user -role vsadmin-smb-share -application ssh -authentication-method password -vserver svm

Please enter a password for user 'smb-share-user':
Please enter it again:

ユーザーの作成が完了しました。

ユーザー名の最大文字数の上限が決まっているようですね。

NetAppのKBでもユーザー名の最大文字数について言及されていました。

  • User Name limitations
    • User Name is able to use valid characters: A-Z, a-z, 0-9, ".", "_", and "-"
    • Note: User Name cannot start with -
    • Maximum character is 16

Does User Name and Password of SVM user account have limitations? - NetApp Knowledge Base

ユーザーの情報はsecurity login showで確認できます。

::> security login show -user-or-group-name smb-share-user

Vserver: svm
                                                                 Second
User/Group                 Authentication                 Acct   Authentication
Name           Application Method        Role Name        Locked Method
-------------- ----------- ------------- ---------------- ------ --------------
smb-share-user ssh         password      vsadmin-smb-share
                                                          no     none

::> security login show -user-or-group-name smb-share-user -instance

                      Vserver: svm
      User Name or Group Name: smb-share-user
                  Application: ssh
        Authentication Method: password
     Remote Switch IP Address: -
                    Role Name: vsadmin-smb-share
               Account Locked: no
                 Comment Text: -
      Whether Ns-switch Group: no
Second Authentication Method2: none
 LDAP Fastbind Authentication: no

動作確認

動作確認です。

作成したONTAPユーザーでSVMにSSHして、権限で指定したとおりにコマンドが叩けられるのか確認します。

>  ssh smb-share-user@localhost -p 22224
(smb-share-user@localhost) Password:

This is your first recorded login.
svm::> whoami

Error: "whoami" is not a recognized command

svm::> vserver show

Error: "show" is not a recognized command

svm::> ?
  exit                        Quit the CLI session
  history                     Show the history of commands for this CLI session
  man                         Display the on-line manual pages
  redo                        Execute a previous command
  rows                        Show/Set the rows for this CLI session
  top                         Go to the top-level directory
  up                          Go up one directory
  volume>                     Manage virtual storage, including volumes, snapshots, and mirrors
  vserver>                    Manage Vservers

svm::> vserver ?
  cifs>                       Manage the CIFS configuration of a Vserver

svm::> vserver cifs ?
  branchcache>                Manage CIFS BranchCache settings
  character-mapping>          Manage character mappings for invalid characters
  check                       Display Validation Status of CIFS Configuration from Each Node
  connection>                 Manage CIFS connections
  domain>                     Manage domain interaction
  group-policy>               Manage group policies
  home-directory>             Manage home directories
  nbtstat                     Display NetBIOS information over TCP connection
  options>                    Manage CIFS options
  security>                   Manage CIFS security settings
  session>                    Manage CIFS sessions
  share>                      Manage CIFS shares
  show                        Display CIFS servers
  symlink>                    Manage symbolic and wide links
  users-and-groups>           Manage local users, groups, and privileges

svm::> vserver cifs share ?
  access-control>             The access-control directory
  create                      Create a CIFS share
  delete                      Delete a CIFS share
  modify                      Modify a CIFS share
  properties>                 Manage share properties
  show                        Display CIFS shares

svm::> vserver cifs show
            Server          Status    Domain/Workgroup Authentication
Vserver     Name            Admin     Name             Style
----------- --------------- --------- ---------------- --------------
svm         SMB-SERVER      up        CORP             domain

svm::> vserver cifs share show
Vserver        Share         Path              Properties Comment  ACL
-------------- ------------- ----------------- ---------- -------- -----------
svm            c$            /                 oplocks    -        BUILTIN\Administrators / Full Control
                                               browsable
                                               changenotify
                                               show-previous-versions
svm            FSxN vol_ntfs /vol_ntfs         oplocks    -        Everyone / Full Control
                                               browsable
                                               changenotify
                                               show-previous-versions
svm            FSxN          /vol_ntfs/SMB     oplocks             Everyone / Full Control
               日本語共有    share             browsable
                                               changenotify
                                               show-previous-versions
svm            FSxN日本語    /vol_ntfs/SMB     oplocks             Everyone / Full Control
               共有          share             browsable
                                               changenotify
                                               show-previous-versions
svm            ipc$          /                 browsable  -        -
svm            New folder    /vol_ntfs/qtree1_ oplocks             Everyone / Read
                             renamed2/New      browsable
                             folder            changenotify
                                               show-previous-versions
svm            share         /vol_ntfs         oplocks    -        Everyone / Full Control
                                               browsable
                                               changenotify
                                               show-previous-versions
svm            share_qtree   /vol_ntfs/qtree1_ oplocks    -        Everyone / Full Control
                             renamed           browsable
                                               changenotify
                                               show-previous-versions
svm            share_qtree_  /vol_ntfs/qtree2_ oplocks    -        Everyone / Full Control
               dir           renamed/dir       browsable
                                               changenotify
                                               show-previous-versions
svm            vol_ntfs_dst  /vol_ntfs_dst     oplocks    -        Everyone / Full Control
                                               browsable
                                               changenotify
Press <space> to page down, <return> for next line, or 'q' to quit...
10 entries were displayed.

svm::> volume ?
  show                        Display a list of volumes

svm::> volume show
Vserver   Volume       Aggregate    State      Type       Size  Available Used%
--------- ------------ ------------ ---------- ---- ---------- ---------- -----
svm       non_97_dev_fsvol_vol_test1
                       aggr1        online     RW         10GB     9.50GB    0%
svm       non_97_dev_fsvol_vol_test2
                       aggr1        online     RW          2GB     1.90GB    0%
svm       svm_root     aggr1        online     RW          1GB    960.7MB    1%
svm       vol1         aggr1        online     RW         16GB    13.19GB   13%
svm       vol_ntfs     aggr1        online     DP        256GB    215.3GB   11%
svm       vol_ntfs_dst aggr1        online     RW      46.32GB     5.01GB   88%
6 entries were displayed.

vserver cifs share配下はcreatemodifyなど、書き込み系のコマンドを叩けそうですが、volumeなどそれ以外については書き込み系のコマンドは候補にも出てきていないですね。

一点、whoamiは自信がどのユーザーなのか把握するために権限に追加しても良いかもですね。

追加する場合は以下のとおりです。

::> security login role create -role vsadmin-smb-share -cmddirname "security login whoami" -access readonly -vserver svm

::> security login role show -role vsadmin-smb-share
           Role          Command/                                      Access
Vserver    Name          Directory                               Query Level
---------- ------------- --------- ----------------------------------- --------
svm        vsadmin-smb-share
                         DEFAULT                                       none
                         security login whoami                         readonly
                         volume create                                 readonly
                         volume modify                                 readonly
                         volume show                                   readonly
                         vserver cifs                                  readonly
                         vserver cifs session                          all
                         vserver cifs share                            all
8 entries were displayed.

whoamiを叩けられるか確認します。

>  ssh smb-share-user@localhost -p 22224
(smb-share-user@localhost) Password:

Last login time: 11/27/2024 06:06:09
Your privilege has changed since last login.
svm::> whoami
  (security login whoami)

User: smb-share-user
Role: vsadmin-smb-share

叩けました。

最後にSMBファイル共有の設定ができるかどうか確認します。

svm::> cifs share create -share-name share-test -path /vol_ntfs_dst

svm::> vserver cifs share show -share-name share-test

                                        Share: share-test
                     CIFS Server NetBIOS Name: SMB-SERVER
                                         Path: /vol_ntfs_dst
                             Share Properties: oplocks
                                               browsable
                                               changenotify
                                               show-previous-versions
                           Symlink Properties: symlinks
                      File Mode Creation Mask: -
                 Directory Mode Creation Mask: -
                                Share Comment: -
                                    Share ACL: Everyone / Full Control
                File Attribute Cache Lifetime: -
                                  Volume Name: vol_ntfs_dst
                                Offline Files: manual
                Vscan File-Operations Profile: standard
            Maximum Tree Connections on Share: 4294967295
                   UNIX Group for File Create: -

はい、問題なくできました。

アクセス権限を細かく設定したい時や、運用者ごとにユーザーを発行したい時に

Amazon FSx for NetApp ONTAP接続時に使用するユーザーとロールを作成してみました。

アクセス権限を細かく設定したい時や、運用者ごとにユーザーを発行したい時にカスタムロールやカスタムユーザーを用意してみると良いでしょう。

この記事が誰かの助けになれば幸いです。

以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.